package com.vdf.sisconsolid.rest.definition;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import javax.ws.rs.DELETE;
import javax.ws.rs.GET;
import javax.ws.rs.POST;
import javax.ws.rs.PUT;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;
import javax.ws.rs.core.Response;

import com.vdf.sisconsolid.rest.type.TipoServicio;

@Path("users")
public class RestTipoServicio {
	static Map responseTipoServicio;
	static int countId = 3;
	static List<TipoServicio> tsList = new ArrayList<TipoServicio>();
	static {
		responseTipoServicio = new HashMap();
		TipoServicio tp = new TipoServicio();
		tp.setId(1);
		tp.setName("name1");
		tsList.add(tp);
		TipoServicio tp2 = new TipoServicio();
		tp2.setId(2);
		tp2.setName("name2");
		tsList.add(tp2);
		responseTipoServicio.put("success", true);
		responseTipoServicio.put("message", "Loaded Data");
		responseTipoServicio.put("data", tsList);

	}
	
	Map<String, Object> responseRest;

	@GET
	@Produces("application/json")
	public Map get() {
		return responseTipoServicio;
	}

	@GET
	@Path("{id}")
	@Produces("application/json")
	public TipoServicio getById(@PathParam("id") int id) {
		TipoServicio tp = new TipoServicio();
		tp.setId(id);
		return tsList.get(tsList.indexOf(tp));
	}

	@POST
	@Produces("application/json")
	public Map<String, Object> post(TipoServicio tipoServicio) {

		tipoServicio.setId(countId++);
		tsList.add(tipoServicio);
		return this.getResponseRest(true,"Data Loaded", tipoServicio);
	}

	@PUT
	@Path("{id}")
	@Produces("application/json")
	public void put(@PathParam("id") int id, TipoServicio tipoServicio) {
		tsList.set(tsList.indexOf(tipoServicio), tipoServicio);
	}

	@DELETE
	@Path("{id}")
	@Produces("application/json")
	public void delete(@PathParam("id") int id) {
		TipoServicio tp = new TipoServicio();
		tp.setId(id);
		tsList.remove(tsList.indexOf(tp));
	}
	
	private Map<String, Object> getResponseRest(Boolean succes, String message, Object data) {		
		return this.getResponseRest(succes, message, data, null);
	}
	
	private Map<String, Object> getResponseRest(Boolean succes, String message, Object data, Long totalCount) {
		responseRest = new HashMap<String, Object>();
		responseRest.put("success", succes);
		responseRest.put("message", message);
		responseRest.put("data", data);
		return responseRest;
	}

	// @GET
	// @Path("listAll")
	// @Produces("application/json")
	// public List<TipoServicio> listAll()
	// {
	// List<TipoServicio> tsList= new ArrayList<TipoServicio>();
	//
	// TipoServicio tp = new TipoServicio();
	// tp.setId(1);
	// tp.setName("name1");
	// tsList.add(tp);
	// TipoServicio tp2 = new TipoServicio();
	// tp2.setId(2);
	// tp2.setName("name2");
	// tsList.add(tp2);
	// return tsList;
	// }
	//
	// @GET
	// @Path("listMap")
	// @Produces("application/json")
	// public Map listMap()
	// {
	//
	//
	// Map map= new HashMap();
	// List<TipoServicio> tsList= new ArrayList<TipoServicio>();
	// TipoServicio tp = new TipoServicio();
	// tp.setId(1);
	// tp.setName("name1");
	// tsList.add(tp);
	// TipoServicio tp2 = new TipoServicio();
	// tp2.setId(2);
	// tp2.setName("name2");
	// tsList.add(tp2);
	// map.put("success", true);
	// map.put("data", tsList);
	//
	// return map;
	// }
	//
	// @GET
	// @Path("{id}")
	// @Produces("application/json")
	// public TipoServicio getUno(@PathParam("id") int id)
	// {
	//
	//
	// Map map= new HashMap();
	// List<TipoServicio> tsList= new ArrayList<TipoServicio>();
	// TipoServicio tp = new TipoServicio();
	// tp.setId(1);
	// tp.setName("name1");
	// tsList.add(tp);
	// TipoServicio tp2 = new TipoServicio();
	// tp2.setId(2);
	// tp2.setName("name2");
	// tsList.add(tp2);
	// map.put("success", true);
	// map.put("data", tsList);
	//
	// return tp;
	// }

}
